/* Copyright (c) 2004-2024 peigen.info. All rights reserved. */

package info.peigen.hotpot.manage.core.service.result.info;

import info.peigen.hotpot.common.service.base.ResultInfoBase;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;

import java.util.Date;
import java.util.List;

/**
 * <b>(UserResultInfo)</b>
 * "用户" 值对象
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2024-06-28
 */
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@Accessors(chain = true)
@ApiModel
public class UserInfo extends ResultInfoBase {
    @ApiModelProperty(value = "用户Id", position = 1)
    String userId;
    @ApiModelProperty(value = "登录名", position = 2)
    String loginName;
    @ApiModelProperty(value = "状态", position = 9)
    String status;
    @ApiModelProperty(value = "用户手机号", position = 10)
    String mobile;
    @ApiModelProperty(value = "用户邮箱", position = 11)
    String email;
    @ApiModelProperty(value = "角色Ids", position = 12)
    List<RoleInfo> roleInfos;
    @ApiModelProperty(value = "职位Ids", position = 13)
    List<PositionInfo> positionInfos;
    @ApiModelProperty(value = "组织Ids", position = 14)
    List<OrganizationInfo> organizationInfos;
    @ApiModelProperty(value = "最后登录失败时间", position = 15)
    Date loginLastFailTime;
    @ApiModelProperty(value = "登录密码错误次数", position = 16)
    Integer loginPasswordErrorTimes;
    @ApiModelProperty(value = "登录密码失效时间", position = 17)
    Date loginPasswordValidTime;
    @ApiModelProperty(value = "最后一次登录密码修改时间", position = 18)
    Date loginPasswordLastModifyTime;
    @ApiModelProperty(value = "最后一次登录时间", position = 19)
    Date lastLoginTime;
    @ApiModelProperty(value = "最后登录IP", position = 20)
    String lastLoginIp;
    @ApiModelProperty(value = "memo", position = 21)
    String memo;
}